#include "../../../Include/Utils/Ticker/WizUtilsTicker.hpp"


namespace Wiz
{
    namespace Ticker
    {
        namespace Object
        {
            namespace TimeScale
            {
                template<class TimeT>
                Type<TimeT>::Type(tTicker* TPtr) :  tSuper(TPtr), m_TimeScale(1)
                {
                }

                template<class TimeT>
                Type<TimeT>::~Type()
                {
                    m_TimeScale = 1;
                }

                template<class TimeT>
                ::Wiz::Void::Type Type<TimeT>::DoTick(const tTime& DeltaTime)
                {
                    tSuper::DoTick(::Wiz::Cast::Static<tTime>(DeltaTime * m_TimeScale));
                }

                template<class TimeT>
                ::Wiz::Void::Type Type<TimeT>::SetTimeScale(::Wiz::Real::In TS)
                {
                    this->m_TimeScale = TS;
                }

                template<class TimeT>
                ::Wiz::Real::Type Type<TimeT>::GetTimeScale() const
                {
                    return this->m_TimeScale;
                }

                //////////////////////////////////////////////////////////////////////////
                template class Type<::Wiz::Real32::Type>;
                template class Type<::Wiz::Real64::Type>;

                template class Type<::Wiz::Int8::Type>;
                template class Type<::Wiz::Int16::Type>;
                template class Type<::Wiz::Int32::Type>;
                template class Type<::Wiz::Int64::Type>;
                //////////////////////////////////////////////////////////////////////////
            } /// end of namespace TimeScale
        } /// end of namespace Object
    } /// end of namespace Ticker
} /// end of namespace Wiz
